import java.util.Arrays;
public class MyArrayLinst {
    public int[] elem;//elem=null
    public int usedSize;
    public static int capacity = 10;
    public MyArrayLinst() {
        this.elem = new int[capacity];
    }
    //判断是否为空
    public boolean isEmpty() {
        return this.usedSize==0;
    }
        //判断是否为满
    public boolean isFull() {
        return this.usedSize==capacity;
    }
    // 打印顺序表
    public void display() {
        if(isEmpty()){
            System.out.println("顺序表为空，无法打印");
            return ;
        }
        for(int i=0;i<this.usedSize;i++){
            System.out.print(this.elem[i]+" ");
        }
    }
    // 在 pos 位置新增元素
    public void add(int pos, int data) {
        if(isFull()){
            System.out.println("顺序表已满，扩容2倍");
            this.elem=Arrays.copyOf(this.elem,2*capacity);
            capacity*=2;
        }
        for(int i=this.usedSize-1;i>=pos;i--){
            this.elem[i+1]=this.elem[i];
        }
        System.out.println("新增成功");
        this.elem[pos]=data;
        this.usedSize++;
    }
    // 判定是否包含某个元素
    public boolean contains(int toFind) {
        if(isEmpty()){
            System.out.println("顺序表为空，无法判定");
            return false;
        }
        for(int i=0;i<this.usedSize;i++){
            if(this.elem[i]==toFind){
                return true;
            }
        }
        return false;
    }
    // 查找某个元素对应的位置
    public int search(int toFind) {
        if(isEmpty()){
            System.out.println("顺序表为空，无法查找");
            return -1;
        }
        for(int i=0;i<this.usedSize;i++){
            if(this.elem[i]==toFind){
                return i;
            }
        }
        return -1;
    }
    // 获取 pos 位置的元素
    public int getPos(int pos) {
        if(isEmpty()){
            System.out.println("顺序表为空，无法获取pos位置");
            return -1;
        }
        if(pos>=0&&pos<=this.usedSize){
            return this.elem[pos];
        }
        return -1;
    }
    // 给 pos 位置的元素设为 value
    public void setPos(int pos, int value) {
        if(isEmpty()){
            System.out.println("顺序表为空，无法获取pos位置");
            return ;
        }
        if(pos>=0&&pos<=this.usedSize){
            this.elem[pos]=value;
            System.out.println("设置成功");
            return ;
        }
        return ;
    }
    //删除第一次出现的关键字key
    public void remove(int toRemove) {
        if(isEmpty()){
            System.out.println("顺序表为空，无法删除");
            return ;
        }
        int num=search(toRemove);
        for(int i=num;i<this.usedSize-1;i++){
            this.elem[i]=this.elem[i+1];
        }
        this.usedSize--;
        System.out.println("删除成功");
        return ;
    }
    // 获取顺序表长度
    public int size() {
        if(isEmpty()){
            return 0;
        }
        return this.usedSize;
    }

    // 清空顺序表
    public void clear() {
        this.usedSize=0;
        System.out.println("顺序表已清空");
    }
}










//import java.util.Arrays;
//public class MyArrayLinst {
//    public int[] elem;//创建顺序表
//    public int usedSize;//表中存储内容数量
//    public static  int capacity = 10;//表总长
//
//    public MyArrayLinst() {//初始化顺序表
//        this.elem = new int[capacity];//new的位置在堆上，不在类内，类中只是存储地址
//    }
//    // 打印顺序表
//    public void display() {
//        if(isEmpty()){
//            System.out.println("顺序表为空无法打印");
//            return ;
//        }
//        for(int i=0;i<this.usedSize;i++){
//            System.out.print(this.elem[i]+" ");
//        }
//    }
//    //判断顺序表是否为空
//    public boolean isEmpty(){
//        return this.usedSize==0;
//    }
//    //顺序表是否已满
//    public boolean isFull(){
//        return this.usedSize==this.elem.length;
//    }
//    // 在 pos 位置新增元素
//    public void add(int pos, int data) {
//        if(isFull()){
//            this.elem= Arrays.copyOf(this.elem,2*capacity);
//            capacity*=2;
//        }
//        for(int i=this.usedSize-1;i>=pos;i--){
//            this.elem[i+1]=this.elem[i];
//        }
//        this.elem[pos]=data;
//        this.usedSize++;
//    }
//    // 判定是否包含某个元素
//    public boolean contains(int toFind) {
//        if(isEmpty()){
//            System.out.println("数组为空，无法查找");
//            return false;
//        }
//        for(int i=0;i<this.usedSize;i++){
//            if(this.elem[i]==toFind){
//                return true;
//            }
//        }
//        return false;
//    }
//
//
//
//    // 查找某个元素对应的位置
//    public int search(int toFind) {
//        if(isEmpty()){
//            System.out.println("表为空，无法查找");
//            return -1;
//        }
//        for(int i=0;i<this.usedSize;i++){
//            if(this.elem[i]==toFind){
//                return i;
//            }
//        }
//        return -1;
//    }
//
//
//
//
//
//
//    // 获取 pos 位置的元素
//    public int getPos(int pos) {
//        if(isEmpty()){
//            System.out.println("表为空，无法查找");
//            return -1;
//        }
//        if(pos>0&&pos<this.usedSize){
//            return this.elem[pos];
//        }
//        return -1;
//    }
//    // 获取顺序表长度
//    public int size() {
//        if(isEmpty()){
//            System.out.println("表为空，长度为0");
//            return 0;
//        }
//        else{
//            return this.usedSize;
//        }
//    }
//    // 给 pos 位置的元素设为 value
//    public void setPos(int pos, int value) {
//    }
//    //删除第一次出现的关键字key
//    public void remove(int toRemove) {
//        if(isEmpty()){
//            System.out.println("表为空无法删除");
//            return;
//        }
//        if(toRemove>=0&&toRemove<this.usedSize){
//            for(int i=toRemove;i<this.usedSize-1;i++){
//                this.elem[i]=this.elem[i+1];
//            }
//            this.usedSize--;
//            return;
//        }
//        System.out.println("删除位置违法");
//        return ;
//    }
//
//    // 清空顺序表
//    public void clear() {
//
//    }
//}
